Pass -norc
on the command line to not load ~/.eclrc
on startup.
Since :eql
and :eql5
are in *features*
, you can use e.g. #+eql
/ #-eql5
as usual.
To run a Lisp file directly, do e.g. eql5 examples/5-colliding-mice -qtpl
.
See the EQL UI (command eql -qgui
) for a complete list of all supported classes and functions.
In the above mentioned UI you find a "Select" button, allowing you to select any Qt widget (even in other main widgets), if previously loaded from the UI command line. After selecting a widget, the parameter qsel:*q*
will be set to it.
See command line option -qtpl
for a top-level processing Qt events (see also readline note in ../README.txt
).
It uses a simple GUI dialog for debug input (needed because read
runs in its own thread).
On eventual print output, you won't see a fresh prompt, but the REPL will remain ready for input.
You can set this option permanently by adding this in ~./eclrc
:
#+eql (setf eql:*qtpl* t)
If you want to use temporary Qt objects, you can use the qlet
convenience macro (see the function list). It's a let*
variant for Qt objects, deleting them when leaving its body.
No universal GC (garbage collection) for Qt objects:
qlet
macro, which are deleted when leaving the qlet
body.
qlet
(instead of qnew
) if you only need a local Qt object inside a function (e.g. QPainter
, QVariant
, QRegExp
).
QFont
) returned by the functions qget
and qfun
.#<QFont 0x9243840 GC>
.
Enumeration example: |Qt.AlignCenter|
.
So, all enumerations are defined as constants, using case preserving symbol names (allowing convenient tab completion in Emacs).
Errors in EQL functions don't break into the debugger; if you want them to do so, set the variable eql:*break-on-errors*
to T
.
(So the choice is left to you: depending on the situation, either option may be more convenient than the other.)
The currently available Qt5 Modules (see qrequire
) are:
:help :multimedia :network :quick :sql :svg :webengine :webkit
(module :opengl
is obsolete, see QOpenGLWidget
etc.)
If you want to use CLOS together with qt-object
instances (which are of type struct
), see examples X-extras/CLOS-encapsulation.lisp
and 5-colliding-mice.lisp
.
So there's a simple way to use either defclass
or defstruct
to encapsulate a qt-object
.
If you're interested in embedding EQL in existing Qt/C++ projects, see example in directory Qt_EQL/
(which can be used together with Slime).
See also plugin example in directory Qt_EQL_plugin/
.
The necessary parsing for generating the src/gen/*
files is done by parsing the Qt documentation. See helper/README.txt
if you want do it yourself.